package pe.gob.sedapal.scmultimedia.rcp.view.estadocuenta;

import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Text;
import org.eclipse.wb.swt.ResourceManager;

import pe.gob.sedapal.scmultimedia.config.ApplicationContext;
import pe.gob.sedapal.scmultimedia.domain.Calle;
import pe.gob.sedapal.scmultimedia.sessionbean.DataSessionBean;
import pe.gob.sedapal.scmultimedia.util.Constante;
import pe.gob.sedapal.scmultimedia.util.Messages;
import pe.gob.sedapal.scmultimedia.wb.swt.SWTResourceManager;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.events.MouseTrackAdapter;

public class CallesShell {
	
	Text txtCalle;
	final Shell child;
	Shell parent;
	public BuscarDireccionView buscarDireccionView;

	private DataSessionBean dataSessionBean;
	
	private Table table;
	private Text txtFieldProvincia;
	private Text txtFieldDistrito;
	private Text txtFieldLocalidad;

	public CallesShell(final Shell padre, BuscarDireccionView bdv) {
		dataSessionBean = (DataSessionBean)ApplicationContext.getBean(DataSessionBean.class);
		
		parent = padre;
		parent.setBackground(SWTResourceManager.getColor(173, 216, 230));
		parent.setBackgroundMode(SWT.INHERIT_DEFAULT);
		
	    buscarDireccionView = bdv;
	    child = new Shell(parent,SWT.APPLICATION_MODAL);
	    child.setBackgroundImage(ResourceManager.getPluginImage("scmultimedia", Constante.RUTA_IMG_FONDO_SEDAPAL));
	    child.setBackgroundMode(SWT.INHERIT_DEFAULT);
	    child.setSize(702, 463);
	    		    	
	    	txtCalle = new Text(child, SWT.BORDER);
	    	txtCalle.setEditable(false);
	    	txtCalle.setBounds(21, 419, 300, 27);
	    		    
	    		    Label lblProvincia = new Label(child, SWT.NONE);
	    		    lblProvincia.setForeground(org.eclipse.wb.swt.SWTResourceManager.getColor(Constante.VALOR_FUENTE_RED, Constante.VALOR_FUENTE_GREEN, Constante.VALOR_FUENTE_BLUE));
	    		    lblProvincia.setFont(org.eclipse.wb.swt.SWTResourceManager.getFont("Ubuntu", 13, SWT.BOLD));
	    		    lblProvincia.setBounds(10, 67, 81, 27);
	    		    lblProvincia.setText(Messages.callesShell_etiqueta_provincia);
	    		    
	    		    Label lblDistrito = new Label(child, SWT.NONE);
	    		    lblDistrito.setForeground(org.eclipse.wb.swt.SWTResourceManager.getColor(Constante.VALOR_FUENTE_RED, Constante.VALOR_FUENTE_GREEN, Constante.VALOR_FUENTE_BLUE));
	    		    lblDistrito.setFont(org.eclipse.wb.swt.SWTResourceManager.getFont("Ubuntu", 13, SWT.BOLD));
	    		    lblDistrito.setBounds(10, 100, 81, 27);
	    		    lblDistrito.setText(Messages.callesShell_etiqueta_distrito);
	    		    
	    		    Label lblLocalidad = new Label(child, SWT.NONE);
	    		    lblLocalidad.setForeground(org.eclipse.wb.swt.SWTResourceManager.getColor(Constante.VALOR_FUENTE_RED, Constante.VALOR_FUENTE_GREEN, Constante.VALOR_FUENTE_BLUE));
	    		    lblLocalidad.setFont(org.eclipse.wb.swt.SWTResourceManager.getFont("Ubuntu", 13, SWT.BOLD));
	    		    lblLocalidad.setBounds(10, 133, 81, 27);
	    		    lblLocalidad.setText(Messages.callesShell_etiqueta_localidad);
	    		    
	    		    table = new Table(child, SWT.BORDER | SWT.FULL_SELECTION);
	    		    table.addMouseListener(new MouseAdapter() {
	    		    	@Override
	    		    	public void mouseDown(MouseEvent e) {
	    		    		int calleSeleccionada = table.getSelectionIndex();
	    		    		Calle calleTemporal = buscarDireccionView.getCalles().get(calleSeleccionada);
	    		    		txtCalle.setText(calleTemporal.getNomCalle());
	    		    		//dataSessionBean.setCalle(buscarDireccionView.getCalles().get(calleSeleccionada));
	    		    		//txtCalle.setText(dataSessionBean.getCalle().getNomCalle());
	    		    	}
	    		    });
	    		    table.setBounds(35, 169, 613, 213);
	    		    table.setHeaderVisible(true);
	    		    table.setLinesVisible(true);
	    		    dibujarTabla();
	    		    
	    		    TableColumn tblclmnNombreCalle = new TableColumn(table, SWT.NONE);
	    		    tblclmnNombreCalle.setWidth(100);
	    		    tblclmnNombreCalle.setText(Messages.callesShell_tabla_nombreCalle);
	    		    
	    		    final Label btnAceptar = new Label(child, SWT.CENTER);
	    		    btnAceptar.addMouseTrackListener(new MouseTrackAdapter() {
	    		    	@Override
	    		    	public void mouseEnter(MouseEvent e) {
	    		    		btnAceptar.setImage(org.eclipse.wb.swt.ResourceManager.getPluginImage("scmultimedia", Constante.RUTA_BOTON_ACEPTAR_ON));
	    		    	}
	    		    	@Override
	    		    	public void mouseExit(MouseEvent e) {
	    		    		btnAceptar.setImage(org.eclipse.wb.swt.ResourceManager.getPluginImage("scmultimedia", Constante.RUTA_BOTON_ACEPTAR_OFF));
	    		    	}
	    		    });
	    		    btnAceptar.addMouseListener(new MouseAdapter() {
	    		    	@Override
	    		    	public void mouseDown(MouseEvent e) {
	    		    		if(table.getSelectionCount() > 0){
		    		    		establecerCalle();
		    		    		child.close();	    		    			
	    		    		}else{
	    		    			MessageDialog.openInformation(child, Constante.MSG_ERROR, Constante.MSG_SELECCIONAR_CALLE);
	    		    		}

	    		    	}
	    		    });
	    			btnAceptar.setImage(org.eclipse.wb.swt.ResourceManager.getPluginImage("scmultimedia", Constante.RUTA_BOTON_ACEPTAR_OFF));
	    		    btnAceptar.setBounds(327, 388, 169, 58);
	    		    //btnAceptar.setBounds(416, 397, 155, 30);
	    		    //btnAceptar.setText("Aceptar");
	    		    
    		    	final Label btnCerrar = new Label(child, SWT.CENTER);
    		    	btnCerrar.addMouseTrackListener(new MouseTrackAdapter() {
	    		    	@Override
	    		    	public void mouseEnter(MouseEvent e) {
	    		    		btnCerrar.setImage(org.eclipse.wb.swt.ResourceManager.getPluginImage("scmultimedia", Constante.RUTA_BOTON_REGRESAR_ON));
	    		    	}
	    		    	@Override
	    		    	public void mouseExit(MouseEvent e) {
	    		    		btnCerrar.setImage(org.eclipse.wb.swt.ResourceManager.getPluginImage("scmultimedia", Constante.RUTA_BOTON_REGRESAR_OFF));
	    		    	}
	    		    });    		    	
    		    	btnCerrar.addMouseListener(new MouseAdapter() {
    		    		@Override
    		    		public void mouseDown(MouseEvent e) {
    		    			//retornarTexto();
    		    			child.close();
    		    		}
    		    	});
    		    	btnCerrar.setImage(org.eclipse.wb.swt.ResourceManager.getPluginImage("scmultimedia", Constante.RUTA_BOTON_REGRESAR_OFF));
    		    	btnCerrar.setBounds(511, 388, 169, 58);
    		    	
    		    	Label lblSeleccionarCalle = new Label(child, SWT.NONE);
    		    	lblSeleccionarCalle.setForeground(org.eclipse.wb.swt.SWTResourceManager.getColor(Constante.VALOR_FUENTE_RED,Constante.VALOR_FUENTE_GREEN,Constante.VALOR_FUENTE_BLUE));
    		    	lblSeleccionarCalle.setFont(org.eclipse.wb.swt.SWTResourceManager.getFont("FreeSans", 16, SWT.BOLD | SWT.ITALIC));
    		    	lblSeleccionarCalle.setBounds(10, 18, 259, 27);
    		    	lblSeleccionarCalle.setText(Messages.callesShell_titulo);
    		    	
    				Label imgLogo = new Label(child, SWT.NONE);
    				imgLogo.setImage(ResourceManager.getPluginImage("scmultimedia", Constante.RUTA_IMG_LOGO_SEDAPAL_INTERNO));
    				imgLogo.setBounds(555, 0, 192, 84);    	    		    	
    		    	
    		    	Label lblBarra = new Label(child, SWT.NONE);
    		    	lblBarra.setBounds(10, 51, 670, 8);
    				lblBarra.setImage(ResourceManager.getPluginImage("scmultimedia", Constante.RUTA_IMG_BARRA));

    				txtFieldProvincia = new Text(child, SWT.BORDER);
    				txtFieldProvincia.setEditable(false);
    				txtFieldProvincia.setText("txtProvincia");
    				txtFieldProvincia.setBounds(97, 67, 278, 27);
    				txtFieldProvincia.setText(dataSessionBean.getProvincia().getNomDepto());
    				
    				txtFieldDistrito = new Text(child, SWT.BORDER);
    				txtFieldDistrito.setEditable(false);
    				txtFieldDistrito.setBounds(97, 100, 278, 27);
    				txtFieldDistrito.setText(dataSessionBean.getDistrito().getNomMunic());
    				
    				txtFieldLocalidad = new Text(child, SWT.BORDER);
    				txtFieldLocalidad.setEditable(false);
    				txtFieldLocalidad.setBounds(97, 133, 278, 27);
    				txtFieldLocalidad.setText(dataSessionBean.getLocalidad().getNomLocal());
    				
    				Label lblCalle = new Label(child, SWT.NONE);
    				lblCalle.setFont(org.eclipse.wb.swt.SWTResourceManager.getFont("Ubuntu", 13, SWT.BOLD));
    				lblCalle.setBounds(10, 388, 66, 27);
    				lblCalle.setForeground((org.eclipse.wb.swt.SWTResourceManager.getColor(Constante.VALOR_FUENTE_RED,Constante.VALOR_FUENTE_GREEN,Constante.VALOR_FUENTE_BLUE)));
    				lblCalle.setText(Messages.callesShell_etiqueta_calle);
	    		    
	    		    
	
	child.open();    
  }

	public void dibujarTabla(){
		TableItem item;

		table.removeAll();
		for (Calle calle : buscarDireccionView.getCalles()) {
			item= new TableItem(table, SWT.NONE);
			item.setText(0, calle.getNomCalle());
		}	
		
		table.setRedraw(true);		
	}

	public void establecerCalle(){
		dataSessionBean.setCalle(buscarDireccionView.obtenerCallePorNombre(txtCalle.getText()));
		buscarDireccionView.llenarNumeros();
		buscarDireccionView.getTxtCalle().setText(dataSessionBean.getCalle().getNomCalle());
	}
}
